package com.hospital.common.utils;

/**
 * 线程变量工具类
 * <br>该类用于保存线程变量,如当前用户信息,当前用户权限信息,当前用户角色信息等等,以及信息的提取
 *
 * @author yhn
 * @version 1.0
 *
 */
public class ThreadLocalUtils {

    /**
     * 线程变量
     */
    private static final ThreadLocal<Object> threadLocal = new ThreadLocal<>();

    /**
     * 设置当前线程变量存储值
     * @param value 设置线程变量存储值
     * @param <T> 设置线程变量存储值类型
     */
    public static <T> void set(T value){
        threadLocal.set(value);
    }

    /**
     * 获取当前线程变量存储值
     * @param <T> 获取线程变量存储值类型
     * @return 线程变量存储值
     */
    public static <T> T get(){
        // 自动强转
        return (T) threadLocal.get();
    }

    /**
     * 清空当前线程变量存储值
     */
    public static void clear(){
        threadLocal.remove();
    }
}
